/*
 * Copyright 2010 Christoph Widulle (christoph.widulle@googlemail.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */



package com.android1.amarena2d.transition;

import com.android1.amarena2d.annotations.Draft;
import com.android1.amarena2d.annotations.Unused;
import com.android1.amarena2d.engine.EngineObject;
import com.android1.amarena2d.nodes.Scene;

@Draft
@Unused
public abstract class Transition extends EngineObject {


    protected Scene inScene;
    protected Scene outScene;

    protected float duration;
    protected boolean inSceneOnTop;

    protected Transition(float duration, boolean inSceneOnTop) {
        this.duration = duration;
        this.inSceneOnTop = inSceneOnTop;
    }

    protected Transition(float duration) {
        this.duration = duration;
        this.inSceneOnTop = true;
    }

    public void init(Scene outScene, Scene inScene) {
        this.outScene = outScene;
        this.inScene = inScene;
    }


    public abstract void start();

    public abstract boolean isFinished();


    public void render() {
        if (inSceneOnTop) {
            outScene.render();
            inScene.render();
        } else {
            inScene.render();
            outScene.render();
        }
    }

    public Scene getInScene() {
        return inScene;
    }

    public Scene getOutScene() {
        return outScene;
    }

    public float getDuration() {
        return duration;
    }

    public void setDuration(float duration) {
        this.duration = duration;
    }
}
